///*
// * Copyright (C) 2017  即时通讯网(52im.net) & Jack Jiang.
// * The MobileIMSDK_X (MobileIMSDK v3.x) Project.
// * All rights reserved.
// *
// * > Github地址: https://github.com/JackJiang2011/MobileIMSDK
// * > 文档地址: http://www.52im.net/forum-89-1.html
// * > 即时通讯技术社区：http://www.52im.net/
// * > 即时通讯技术交流群：320837163 (http://www.52im.net/topic-qqgroup.html)
// *
// * "即时通讯网(52im.net) - 即时通讯开发者社区!" 推荐开源工程。
// *
// * IMClientManager.java at 2017-5-1 21:08:44, code by Jack Jiang.
// * You can contact author with jack.jiang@52im.net or jb2011@163.com.
// */
//package com.srwl.mytx.im;
//
//import android.content.Context;
//import android.content.Intent;
//import android.os.AsyncTask;
//import android.text.TextUtils;
//import android.util.Log;
//
//import com.alibaba.fastjson.JSONObject;
//import com.srwl.mytx.Constant;
//import com.srwl.mytx.im.conversation.Conversation;
//import com.srwl.mytx.domain.Message;
//import com.srwl.mytx.Helper;
//import com.srwl.mytx.activity.MainActivity;
//import com.starrtc.starrtcsdk.api.XHClient;
//import com.starrtc.starrtcsdk.apiInterface.IXHChatManagerListener;
//import com.starrtc.starrtcsdk.core.im.message.XHIMMessage;
//
//import net.openmob.mobileimsdk.android.ClientCoreSDK;
//import net.openmob.mobileimsdk.android.conf.ConfigEntity;
//import net.openmob.mobileimsdk.android.core.LocalUDPDataSender;
//import net.openmob.mobileimsdk.android.event.ChatBaseEvent;
//import net.openmob.mobileimsdk.android.event.ChatTransDataEvent;
//import net.openmob.mobileimsdk.android.event.MessageQoSEvent;
//import net.openmob.mobileimsdk.server.protocal.Protocal;
//
//import java.util.ArrayList;
//import java.util.List;
//
//
//@Deprecated
//public class IMClientManager implements ChatTransDataEvent, ChatBaseEvent, MessageQoSEvent, Conversation.MessageUnReadCountListener, IXHChatManagerListener {
//    private static String TAG = IMClientManager.class.getSimpleName();
//    private ChatRoomMessageListener chatRoomMessageListener;
//    private ImListener totalUnreadMessageListener;
//    private static IMClientManager instance = null;
//
//    /**
//     * MobileIMSDK是否已被初始化. true表示已初化完成，否则未初始化.
//     */
//    private boolean init = false;
//    private int totalUnReadCount;
//    private Context context = null;
//    private ConversationService conversationService;
//    private PushMessageService pushMessageService;
//
//    public static IMClientManager getInstance() {
//        if (instance == null)
//            instance = new IMClientManager();
//        return instance;
//    }
//
//    private IMClientManager() {
//    }
//
//    public void init(Context context) {
//        this.context = context;
//      //  pushMessageService = new PushMessageService(this.context, this);
//       // conversationService = new ConversationService(this.context, this);
//        initMobileIMSDK();
//    }
//
//    public void initMobileIMSDK() {
//        if (!init) {
//            // 设置AppKey
//            ConfigEntity.appKey = "5418023dfd98c579b6001741";
//
//            // 设置服务器ip和服务器端口
//            ConfigEntity.serverIP = "192.168.0.102";
//            ConfigEntity.serverUDPPort = 7901;
//
//
//            // MobileIMSDK核心IM框架的敏感度模式设置
////			ConfigEntity.setSenseMode(SenseMode.MODE_10S);
//
//            // 开启/关闭DEBUG信息输出
////	    	ClientCoreSDK.DEBUG = false;
//
//            // 【特别注意】请确保首先进行核心库的初始化（这是不同于iOS和Java端的地方)
//            ClientCoreSDK.getInstance().init(this.context);
//
//            // 设置事件回调
//
//            ClientCoreSDK.getInstance().setChatBaseEvent(this);
//            ClientCoreSDK.getInstance().setChatTransDataEvent(this);
//            ClientCoreSDK.getInstance().setMessageQoSEvent(this);
//            XHClient.getInstance().getChatManager().addListener(this);
//            init = true;
//            //重置
//            totalUnReadCount = 0;
//
//        }
//    }
//
//    public void release() {
//        resetInitFlag();
//        conversationService = null;
//        pushMessageService = null;
//    }
//
//    public void logout() {
//        // 发出退出登陆请求包（Android系统要求必须要在独立的线程中发送哦）
//        new AsyncTask<Object, Integer, Integer>() {
//            @Override
//            protected Integer doInBackground(Object... params) {
//                int code = -1;
//                try {
//                    code = LocalUDPDataSender.getInstance(context).sendLoginout();
//                } catch (Exception e) {
//                    Log.w(TAG, e);
//                }
//                //## BUG FIX: 20170713 START by JackJiang
//                // 退出登陆时记得一定要调用此行，不然不退出APP的情况下再登陆时会报 code=203错误哦！
//                release();
//                //## BUG FIX: 20170713 END by JackJiang
//
//                return code;
//            }
//
//            @Override
//            protected void onPostExecute(Integer code) {
//                if (code == 0) {
//                    Log.d(TAG, "注销登陆请求已完成！");
//                    release();
//
//                } else {
//                    Log.d(TAG, "注销登陆请求发送失败。错误码是：" + code + "！");
//                }
//            }
//        }.execute();
//
//    }
//
//
//    /**
//     * 重置init标识。
//     * <p>
//     * <b>重要说明：</b>不退出APP的情况下，重新登陆时记得调用一下本方法，不然再
//     * 次调用 {@link #initMobileIMSDK()} 时也不会重新初始化MobileIMSDK（
//     * 详见 {@link #initMobileIMSDK()}代码）而报 code=203错误！
//     */
//    public void resetInitFlag() {
//        init = false;
//    }
//
//
//    @Override
//    public void onTransBuffer(String fingerPrintOfProtocal, String userId, String dataContent, int type) {
//        Log.i(TAG, "【DEBUG_UI】[typeu=" + type + "]收到来自用户" + userId + "的消息:" + dataContent);
//
//        switch (type) {
//
//            case Constant.LIVE_ROOM_MESSAGE:
//                Message tribeMessage = JSONObject.parseObject(dataContent, Message.class);
//                //聊天室消息 不增加总未读数，简称不可见（事实上在聊天室里面是可见的.... 所以不可见这个描述，，并不准确）
////                if (tribeMessage.getVisible().equals(Constant.MESSAGE_VISIBLE)) {
////                    totalUnReadCount++;
////                    if (totalUnreadMessageListener != null) {
////                        totalUnreadMessageListener.onUnreadCountChange(totalUnReadCount);
////                    }
////                }
//                handleLiveRoomMessage(tribeMessage);
//                break;
//
//            case Constant.C2C_MESSAGE:
//                Message message = JSONObject.parseObject(dataContent, Message.class);
//                conversationService.distributeC2CMessage(message);
//                if (message.getVisible().equals(Constant.MESSAGE_VISIBLE)) {
//                    totalUnReadCount++;
//                    if (totalUnreadMessageListener != null) {
//                        totalUnreadMessageListener.onUnreadCountChange(totalUnReadCount);
//                    }
//                }
//                break;
//
//            case Constant.MULTIPLE_OFF_LINE_MESSAGE:
//                List<Message> messages = JSONObject.parseArray(dataContent, Message.class);
//                for (Message offLineMessage : messages) {
//                    conversationService.distributeC2CMessage(offLineMessage);
//                    if (offLineMessage.getVisible().equals(Constant.MESSAGE_VISIBLE)) {
//                        totalUnReadCount++;
//                        if (totalUnreadMessageListener != null) {
//                            totalUnreadMessageListener.onUnreadCountChange(totalUnReadCount);
//                        }
//                    }
//                }
//                break;
//
//            case Constant.NOTIFY_MESSAGE:
//
//                Message pushMessage = JSONObject.parseObject(dataContent, Message.class);
//                pushMessageService.distributeC2CMessage(pushMessage);
//                if (pushMessage.getVisible().equals(Constant.MESSAGE_VISIBLE)) {
//                    totalUnReadCount++;
//                    if (totalUnreadMessageListener != null) {
//                        totalUnreadMessageListener.onUnreadCountChange(totalUnReadCount);
//                    }
//                }
//
//                break;
//
//            case Constant.ACCOUNT_MESSAGE:
//                release();
//                Helper.getInstance().reset();
//                if (TextUtils.equals(dataContent, Constant.REPEAT_LOGIN)) {
//                    onConnectionConflict();
//                } else {
//                    onAccountLock();
//                }
//                break;
//            case Constant.TRIBE_MESSAGE:
//        }
//    }
//
//    /**
//     * 当账户在 其他设备登录  强制退出
//     */
//    private void onConnectionConflict() {
//        Intent intent = new Intent(context, MainActivity.class);
//        intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
//        intent.putExtra(Constant.ACCOUNT_CONFLICT, true);
//        context.startActivity(intent);
//    }
//
//    /**
//     * 当用户账户被锁定  强制退出
//     */
//    private void onAccountLock() {
//        Intent intent = new Intent(context, MainActivity.class);
//        intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
//        intent.putExtra(Constant.ACCOUNT_LOCK, true);
//        context.startActivity(intent);
//    }
//
//    private void handleLiveRoomMessage(Message message) {
//        if (chatRoomMessageListener == null) {
//            return;
//        }
//        if (message == null) {
//            return;
//        }
//        Integer messageType = message.getSubType();
//        if (messageType == Constant.IM_TYPE_LIVE_ROOM_CHART_MESSAGE) {
//            chatRoomMessageListener.onReceivedChatMessage(message);
//        } else if (messageType == Constant.IM_TYPE_JOIN_LIVE_ROOM) {
//            chatRoomMessageListener.onUserJoin(message);
//        } else if (messageType == Constant.IM_TYPE_QUIT_LIVE_ROOM) {
//            chatRoomMessageListener.onUserQuit(message);
//        } else if (messageType == Constant.IM_TYPE_LIVE_ROOM_MEMBER_BE_REMOVE) {
//            chatRoomMessageListener.onUserRemove(message);
//        } else {
//            chatRoomMessageListener.onReceivedLiveRoomPushMessage(message);
//        }
//    }
//
//    @Override
//    public void onErrorResponse(int errorCode, String errorMsg) {
//        Log.d(TAG, "【DEBUG_UI】收到服务端错误消息，errorCode=" + errorCode + ", errorMsg=" + errorMsg);
//    }
//
//    @Override
//    public void onLoginMessage(int dwErrorCode) {
//        if (dwErrorCode == 0) {
//            Log.i(TAG, "【DEBUG_UI】IM服务器登录/重连成功！");
//        } else {
//            Log.e(TAG, "【DEBUG_UI】IM服务器登录/连接失败，错误代码：" + dwErrorCode);
//        }
//    }
//
//    @Override
//    public void onLinkCloseMessage(int dwErrorCode) {
//        Log.e(TAG, "【DEBUG_UI】与IM服务器的网络连接出错关闭了，error：" + dwErrorCode);
//    }
//
//    @Override
//    public void messagesLost(ArrayList<Protocal> lostMessages) {
//        Log.d(TAG, "【DEBUG_UI】收到系统的未实时送达事件通知，当前共有" + lostMessages.size() + "个包QoS保证机制结束，判定为【无法实时送达】！");
//        for (Protocal lostMessage : lostMessages) {
//            Message message = JSONObject.parseObject(lostMessage.getDataContent(), Message.class);
//            message.setSendState(Constant.IM_SEND_STATE_FAIL);
//            conversationService.onMessageSendFail(message);
//
//        }
//    }
//
//    @Override
//    public void messagesBeReceived(String messageId) {
//        if (messageId != null) {
//            Log.i(TAG, "消息已经发送成功 messageId：" + messageId);
//        }
//        conversationService.onMessageSendSuccess(messageId);
//    }
//
//    public ConversationService getConversationService() {
//        return conversationService;
//    }
//
//
//    public PushMessageService getPushMessageService() {
//        return pushMessageService;
//    }
//
//
//    public ChatRoomMessageListener getChatRoomMessageListener() {
//        return chatRoomMessageListener;
//    }
//
//    public void setChatRoomMessageListener(ChatRoomMessageListener chatRoomMessageListener) {
//        this.chatRoomMessageListener = chatRoomMessageListener;
//    }
//
//    public void addImListener(ImListener totalUnreadMessageListener) {
//        this.totalUnreadMessageListener = totalUnreadMessageListener;
//        totalUnreadMessageListener.onUnreadCountChange(totalUnReadCount);
//    }
//
//    public int getTotalUnReadCount() {
//        return totalUnReadCount;
//    }
//
//    @Override
//    public void onReadCountReduce(int count) {
//        totalUnReadCount -= count;
//        Log.d(TAG, "onReadCountAdd: 消息未读减少 " + count + " ，当前未读总数是 ： " + totalUnReadCount);
//        if (totalUnReadCount < 0) {
//            Log.e(TAG, "onReadCountReduce: 消息未读总数出现负值 " + totalUnReadCount + "强制归0");
//            totalUnReadCount = 0;
//        }
//        if (totalUnreadMessageListener != null) {
//            totalUnreadMessageListener.onUnreadCountChange(totalUnReadCount);
//        }
//    }
//
//    @Override
//    public void onReadCountAdd(int count) {
//        totalUnReadCount += count;
//        Log.d(TAG, "onReadCountAdd: 消息未读增加 " + count + " ，当前未读总数是 ： " + totalUnReadCount);
//        if (totalUnreadMessageListener != null) {
//            totalUnreadMessageListener.onUnreadCountChange(totalUnReadCount);
//        }
//    }
//
//    public void clearListener() {
//        totalUnreadMessageListener = null;
//    }
//
//    @Override
//    public void onReceivedMessage(XHIMMessage xhimMessage) {
//        Message message = JSONObject.parseObject(xhimMessage.contentData, Message.class);
//        conversationService.distributeC2CMessage(message);
//        if (message.getVisible().equals(Constant.MESSAGE_VISIBLE)) {
//            totalUnReadCount++;
//            if (totalUnreadMessageListener != null) {
//                totalUnreadMessageListener.onUnreadCountChange(totalUnReadCount);
//            }
//        }
//
//    }
//
//    public interface ChatRoomMessageListener {
//        void onReceivedChatMessage(Message charRoomMessage);
//
//        void onUserJoin(Message message);
//
//        void onUserQuit(Message message);
//
//        void onUserRemove(Message message);
//
//        void onReceivedLiveRoomPushMessage(Message charRoomMessage);
//    }
//
//    public interface ImListener {
//
//        void onUnreadCountChange(int totalUnReadCount);
//
//    }
//
//}
